Capstone, Stage 2 - Build
Common Project Requirements
| Criteria | Meet Specification |
|---|---|
|
App conforms to common standards found in the Android Nanodegree General Project Guidelines |
App conforms to common standards found in the Android Nanodegree General Project Guidelines |
|
App is written solely in the Java Programming Language |
App is written solely in the Java Programming Language |
|
Submission must use stable release versions of all libraries, Gradle, and Android Studio. Debug/beta/canary versions are not acceptable. |
App utilizes stable release versions of all libraries, Gradle, and Android Studio. |
Core Platform Development
| Criteria | Meet Specification |
|---|---|
|
App integrates a third-party library. |
App integrates a third-party library. |
|
App validates all input from servers and users. If data does not exist or is in the wrong format, the app logs this fact and does not crash. |
App validates all input from servers and users. If data does not exist or is in the wrong format, the app logs this fact and does not crash. |
|
App includes support for accessibility. That includes content descriptions, navigation using a D-pad, and, if applicable, non-audio versions of audio cues. |
App includes support for accessibility. That includes content descriptions, navigation using a D-pad, and, if applicable, non-audio versions of audio cues. |
|
App keeps all strings in a strings.xml file and enables RTL layout switching on all layouts. |
App keeps all strings in a |
|
App provides a widget to provide relevant information to the user on the home screen. |
App provides a widget to provide relevant information to the user on the home screen. |
Google Play Services
| Criteria | Meet Specification |
|---|---|
|
App integrates two or more Google services |
App integrates two or more Google services. Google service integrations can be a part of Google Play Services or Firebase. |
|
Each service imported in the |
Each service imported in the |
|
If |
If |
|
If |
If |
|
If Analytics is used, the app creates only one analytics instance. If analytics was not used, student meets specifications. |
If |
|
If Maps is used, the map provides relevant information to the user. If maps was not used, student meets specifications. |
If |
|
If Identity is used, the user’s identity influences some portion of the app. If identity was not used, student meets specifications. |
If |
Material Design
| Criteria | Meet Specification |
|---|---|
|
App theme extends AppCompat. |
App theme extends |
|
App uses an app bar and associated toolbars. |
App uses an app bar and associated toolbars. |
|
App uses standard and simple transitions between activities. |
App uses standard and simple transitions between activities. |
Building
| Criteria | Meet Specification |
|---|---|
|
App builds from a clean repository checkout with no additional configuration. |
App builds from a clean repository checkout with no additional configuration. |
|
App builds and deploys using the |
App builds and deploys using the |
|
App is equipped with a signing configuration, and the keystore and passwords are included in the repository. Keystore is referred to by a relative path. |
App is equipped with a signing configuration, and the keystore and passwords are included in the repository. Keystore is referred to by a relative path. |
|
All app dependencies are managed by |
All app dependencies are managed by |
Data Persistence
| Criteria | Meet Specification |
|---|---|
|
App stores data locally either by implementing a ContentProvider OR using Firebase Realtime Database OR using Room. No third party frameworks nor Persistence Libraries may be used. |
App stores data locally either by implementing a ContentProvider OR using Firebase Realtime Database OR using Room. No third party frameworks nor Persistence Libraries may be used. |
|
Must implement at least one of the three: |
Must implement at least one of the three: |
|
If Content provider is used, the app uses a Loader to move its data to its views. |
If Content provider is used, the app uses a Loader to move its data to its views. |
|
If Room is used then LiveData and ViewModel are used when required and no unnecessary calls to the database are made. |
If Room is used then LiveData and ViewModel are used when required and no unnecessary calls to the database are made. |
Tips to make your project standout:
- Make your app more delightful with material design patterns such as shared element transitions across activities and parallax scrolling where two or more items must scroll in the same activity.
- Implement notifications in your app. Remember the following when implementing notifications:
- Notifications should not contain advertising or content unrelated to the core function of the app.
- Notifications should be persistent only if related to ongoing events (such as music playback or a phone call).
- Multiple notifications are stacked into a single notification object, where possible.
- Use notifications only to indicate a context change relating to the user personally (such as an incoming message).
- Use notifications only to expose information/controls relating to an ongoing event (such as music playback or a phone call).
- Implement sharing functionality in your app, making use of intent extras to share rich content (i.e. a paragraph of content-specific text, a link and description, an image, etc).
- Create and use a custom view in your app that could not be achieved with the standard widgets provided by the core views on Android.